package com.bcmusic.order.service;

import com.bcmusic.order.domain.orders.dto.CreateTransferDTO;
import com.bcmusic.order.domain.orders.vo.CreateOrdersVO;
import com.bcmusic.order.domain.orders.vo.CreateTransferVO;
import com.bcmusic.order.pojo.Orders;
import com.github.pagehelper.PageInfo;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/****
 * @Author:admin
 * @Description:Orders业务层接口
 * @Date 2019/6/14 0:16
 *****/
public interface OrdersService {

    /***
     * Orders多条件分页查询
     * @param orders
     * @param page
     * @param size
     * @return
     */
    PageInfo<Orders> findPage(Orders orders, int page, int size);

    /***
     * Orders分页查询
     * @param page
     * @param size
     * @return
     */
    PageInfo<Orders> findPage(int page, int size);

    /***
     * Orders多条件搜索方法
     * @param orders
     * @return
     */
    List<Orders> findList(Orders orders);

    /***
     * 将没有付款的订单设置为未付款
     * @param id
     */
    void unPay(Integer id);

    /***
     * 修改Orders数据
     * @param orders
     */
    void update(Orders orders);

    /***
     * 新增Orders
     * @param orders
     */
    void add(Orders orders);

    /**
     * 根据ID查询Orders
     * @param id
     * @return
     */
     Orders findById(Integer id);

    /***
     * 查询所有Orders
     * @return
     */
    List<Orders> findAll();


    /**
     * 根据购物车id列表创建订单
     * @param userNum
     * @param permissionIdList
     * @return
     */
    CreateOrdersVO createOrder(String userNum, List<Integer> permissionIdList);

//    /**
//     * 修改订单状态
//     * @param orderId 订单id
//     * @param transactionid 微信交易流水号
//     */
//    void updateStatus(Integer orderId,String transactionid);


    /**
     * 提交已经创建的订单
     * @param userNum 用户编号
     * @param orderId 预创建订单的id
     * @return 订单id
     */
    Map<String,String> submitOrders(String userNum, String orderId);

    /**
     * 用户支付，调用这个接口更新版权信息
     * @param orderId
     * @return
     */
    void pay(Integer orderId);

    /**
     * 更新完版权信息后将订单设置为已完成
     * @param orderId
     */
    void finishOrder(Integer orderId);

    /***
     * 在购物页面直接创建转让订单，无需经过购物车
     * @param createTransferDTO
     * @param userNum
     * @return
     */
    CreateTransferVO createTransferOrder(CreateTransferDTO createTransferDTO, String userNum) throws ParseException;
}
